package com.ftg.learn.chapter07;

import java.util.Arrays;

/**
 * 字符串练习1
 *
 * @author lijiaxin
 * @version 1.0
 * @date 2023/7/18 8:01
 */

public class StringTest01 {

    public static void q1() {
//        统计字符串“abc21de416f”中数字个数
        String str1 = "abc21de416f";
        int num = 0;
        for (int i = 0; i < str1.length(); i++) {
            char c = str1.charAt(i);
//            在ASCII码中，数字字符的编码范围是从48到57，分别对应着字符’0’到’9’。
            if (c >= '0' && c <= '9') {
                num++;
            }
        }
        System.out.println(num);
    }

    public static void q2() {
//        设计一个方法，将给定字符串的正序和反序进行连接 ok—>okko
        String str1 = "okk";
        char c[] = str1.toCharArray();
        char temp = 0;
        for (int i = 0; i < c.length / 2; i++) {
            temp = c[i];
            c[i] = c[c.length - 1 - i];
            c[c.length - 1 - i] = temp;
        }
        String s = String.valueOf(c);
        String str2 = str1 + s;
        System.out.println(str1 + "->" + str2);
    }

    public static void q3() {
//        设计一个方法，统计“a”在字符串“this is a test of java”中出现的次数
        String str = "this is a test of javaaa";
        int num = 0;
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c == 'i') {
                num++;
            }
        }
        System.out.println("i有" + num + "个");
    }

    public static void q4() {
//        设计一个方法，将给定的字符串每一个首字母大写 “this is a test of java”---->“This Is A Test Of Java”
//        String str = "this is a test of java";
//        String[] s = str.split(" ");
//        for (int i = 0; i < str.length(); i++) {
//            char ch = s[i].charAt(0);
//            char c = Character.toUpperCase(ch);
//            char[] string1 = s[i].toCharArray();
//            string1[0] = c;
//            s[i] = String.valueOf(string1);
//            System.out.println(s[i]);
//        }
//        StringBuffer sb = new StringBuffer();
//        for (int i = 0; i < s.length; i++) {
//            sb.append(s[i] + " ");
//        }
//        String v = sb.toString();
//        System.out.println(v);

        String s ="this is a test of java";
        char c[] = s.toCharArray();
        for (int i = 0; i <s.length(); i++) {
              if(c[i] == ' '){
                  String d =String.valueOf(c[i+1] ).toUpperCase();
                  c[i+1] =d.charAt(0);
              }else if(i==0){
                  String d =String.valueOf(c[i] ).toUpperCase();
                  c[i] =d.charAt(0);
              }
        }
        String v= String.valueOf(c);
        System.out.println(v);
    }

        public static void q5 () {
//        设计一个方法，获取给定字符串中的全部数字 “za1o1zbp24tcq”
            String str = "za1oz1bp24tcq";
            System.out.println(str);
            String result="";
            for (int i = 0; i < str.length(); i++) {
                char ah=str.charAt(i);
                if(ah>='0'&&ah<='9'){
                    result+=(char)ah;
            }
            }
            System.out.println(result);
        }

        public static void q6(){
//            编写程序在将字符串 “`want you to know one thing`”, 统计出字母 “`n`”和 字母 “`o`”的出现次数
            String str="want you to know one thing";
            int cnum=0;
            int onum=0;
            for (int i = 0; i < str.length(); i++) {
                char c=str.charAt(i);
                if(c=='n'){
                    cnum++;
                }else if(c=='o'){
                    onum++;
                }
            }
            System.out.printf("n有%d个，o有%d个",cnum,onum);
        }

        public static void q7(){
//            字符串转化（压缩） “aabbccddee” -> “a2b2c2d2e2”
            String a="aabbccddee";
//            char a[]=str.toCharArray();
//            char ah=a[0];
//            StringBuilder str2 = new StringBuilder();
//            int count=0;
//            for (int i = 0; i < a.length; i++) {
////                char c=str.charAt(i);
//                if(ah==a[i]){
//                    count++;
//                }
//            }
//            str2.append(a);
//            str2.append(count);


            String str = "";
            for (int i = 0; i < a.length(); i++) {
                if(str.indexOf(a.charAt(i)) == -1){
                    str+=a.charAt(i);
                }
            }
//            String st = "";
            String str1 = null;
            for (int i = 0; i < str.length(); i++) {
                int sum = 0;
                for (int j = 0; j < a.length(); j++) {
                    if(str.charAt(i)==a.charAt(j)){
                        sum++;
                    }
                }
                str1+=str.charAt(i)+""+sum;
            }
            System.out.println(str1);
        }

        public static void q8(){
//            给定一个长度,随机产生一个该长度的字符串,由大写,小写字母
            int len=9;
            for (int i = 0; i < len; i++) {
                int a=(int)(Math.random()*78)+50;
                if(a>=65&&a<=90||a>=97&&a<=122){
//                    String s=String.valueOf(i);
//                    String sU=s.toUpperCase();
//                    char c[] = sU.toCharArray();
                    System.out.print((char)a);
                }else{
                    i--;
                }
            }
        }

        public static void q9(){
//            编写程序将“jdk”全部变为大写，并输出到屏幕，截取子串“DK”，并输出到屏幕
            String str="jdk";
            String s=str.toUpperCase();
            String str1=s.substring(1);
            System.out.println(str1);
        }


    public static void main(String[] args) {
//        q1();
//        q2();
//        q3();
//        q4();
//        q5();
//        q6();

//        q7();
//q8();
//        q9();
    }

}
